package com.cutJar.util;

import java.io.File;

import com.cutJar.Exception.ResourceNullException;
/**
 * 
 * <b>根据相对路径和全路径获取file对象<b>
 * @author 威 
 * <br>2018年3月30日 下午8:19:36 
 *
 */
public class Resource {
	/**
	 * 
	 * 通过相对路径获取File对象
	 * @see
	 * 不用写分隔符‘/’
	 * @param paths 路径分节数组 
	 * @return
	 * @throws ResourceNullException
	 * File
	 *
	 */
	public static File getResource(String... paths) throws ResourceNullException{
		return new File(getResurceToString(paths));
	}
	/**
	 * 
	 * 通过相对路径获取全路径字符串 
	 * @see
	 * 不用写分隔符‘/’
	 * @param paths 路径分节数组
	 * @return
	 * @throws ResourceNullException
	 * String
	 *
	 */
	public static String getResurceToString(String... paths) throws ResourceNullException{
		int len = paths.length;
		StringBuilder pathBuild;
		if(len == 0)
			throw new ResourceNullException("通过绝对路径获取全路径时参数长度不能为0：" + paths.length);
		if(len == 1)
			return System.getProperty("user.dir") + java.io.File.separator + paths[0];
		else{
			pathBuild = new StringBuilder(System.getProperty("user.dir"));
			for(int i = 0; i < len; i++)
				pathBuild.append(File.separator).append(paths[i]);
		}
		return pathBuild.toString();
	}
	/**
	 * 
	 * 通过全路径获取File对象
	 * @see
	 * @param path 
	 * @return
	 * File
	 *
	 */
	public static File getFileSystemResource(String... paths) throws ResourceNullException{
		return new File(getFileSystemResourceToString(paths));
	}
	/**
	 * 
	 * 拼接路径获取字符串
	 * @see
	 * 例如：
	 * C:， Program Files (x86)， Java， jre1.8.0_111， bin
	 * 结果：
	 * C:\Program Files (x86)\Java\jre1.8.0_111\bin
	 * @param paths
	 * @return
	 * @throws ResourceNullException
	 * String
	 *
	 */
	public static String getFileSystemResourceToString(String... paths) throws ResourceNullException{
		int len = paths.length;
		if(len == 0)
			throw new ResourceNullException("通过绝对路径获取全路径时参数长度不能为0：" + paths.length);
		StringBuilder pathBuild = new StringBuilder(paths[0]);
		for(int i = 1; i < len; i++)
			pathBuild.append(File.separator).append(paths[i]);
		return pathBuild.toString();
	}
}
